package pers.lmd.convert;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import pers.lmd.domain.entity.Note;
import pers.lmd.domain.vo.NoteStudentVO;

import java.util.List;

/**
 * @Author lmd
 * @Date 2023/4/30 23:16
 */

/**
 * @Mapper 定义这是一个MapStruct对象属性转换接口，在这个类里面规定转换规则
 * 在项目构建时，会自动生成改接口的实现类，这个实现类将实现对象属性值复制
 */
@Mapper
public interface NoteConvert {
    /**
     * 获取该类自动生成的实现类的实例
     * 接口中的属性都是 public static final 的 方法都是public abstract的
     */
    NoteConvert INSTANCES = Mappers.getMapper(NoteConvert.class);

    /**
     * 这个方法就是用于实现对象属性复制的方法
     *
     * @param note 这个参数就是源对象，也就是需要被复制的对象
     * @return 返回的是目标对象，就是最终的结果对象
     * @Mapping 用来定义属性复制规则 source 指定源对象属性 target指定目标对象属性
     */
    @Mappings({
            @Mapping(source = "leaveTime", target = "leaveTime"),
            @Mapping(source = "backTime", target = "backTime"),
            @Mapping(source = "travel", target = "travel"),
            @Mapping(source = "reason", target = "reason"),
            @Mapping(source = "applyStatus", target = "applyStatus")
    })
    List<NoteStudentVO> toNoteStudentVO(List<Note> note);
}
